package com.xm.bean.context;

import org.springframework.beans.factory.ObjectFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

/**
 * 原型（Prototype）作用域 Bean 的循环依赖
 *   问题：原型 Bean 无法通过三级缓存解决循环依赖。
 *   解决方案：
 *      避免原型 Bean 的循环依赖：重新设计代码，解除循环。
 *      使用 ObjectFactory 或 Provider：延迟获取依赖。
 */
public class PrototypeBean02 {
}

@Component
@Scope("prototype")
class A4{
    private final ObjectFactory<B> bFactory;
    public A4(ObjectFactory<B> bFactory) {
        this.bFactory = bFactory;
    }
    public void doSomething() {
        B b = bFactory.getObject();// 使用时才获取 B
    }
}
